package top.infopub.mgr.bpa.service;

import java.math.BigDecimal;
import java.text.ParseException;
import java.util.List;

import top.infopub.generic.GenericService;
import top.infopub.mgr.bpa.domain.EffectSureDomain;
import top.infopub.mgr.bpa.vo.EffectSureVo;
import top.infopub.mgr.sts.domain.StsEffectDomain;
import top.infopub.model.bpa.EffectSure;
import top.infopub.model.bpa.EffectSureAtt;
import top.infopub.model.bpa.EffectSureDetail;

import com.github.pagehelper.Page;

public interface EffectSureService extends GenericService<EffectSure, String> {

    /**
     * 根据项目编号查询最新的创效确认记录
     * @param proCode 项目编号
     * @return 
     * @see
     */
    EffectSure selectLatestEffectSureByProCode(String proCode);

    /**
     * 根据条件查询分页记录
     * @param page
     * @param effectSureVo
     * @return 
     * @see
     */
    Page<EffectSureDomain> selectPageByDomainWhere(Page<EffectSureDomain> page,
                                                   EffectSureVo effectSureVo);

    /**
     * 根据条件查询-我审批的分页记录
     * @param page
     * @param effectSureVo
     * @return 
     * @see
     */
    Page<EffectSureDomain> selectMyCheckByDomainWhere(Page<EffectSureDomain> page,
                                                      EffectSureVo effectSureVo);

    /**
     * 新增创效确认
     * @param effectSure
     * @param effectSureDetails
     * @param effectSureAtts 
     * @see
     */
    void save(EffectSureVo effectSure, List<EffectSureDetail> effectSureDetails,
              List<EffectSureAtt> effectSureAtts);

    /**
     * 根据id查询创效确认vo
     * @param id 主键id
     * @return 
     * @see
     */
    EffectSureVo queryById(String id);

    /**
     * 根据日期和项目编号查询累计创效总金额
     * @param effectSureVo
     * @return 
     * @see
     */
    BigDecimal selectTotalAmount(EffectSureVo effectSureVo);
    
    /**
     * 根据条件查询商务驾驶舱-项目合同分页记录
     * @param page 分页参数
     * @param type 公司类型
     * @param orgId 公司id
     * @param proName 项目名称
     * @param year 统计年份
     * @return 
     * @throws ParseException 
     * @see
     */
    Page<StsEffectDomain> selectStsByDomainWhere(Page<StsEffectDomain> page,String type, String orgId,
        String proName,String year) throws ParseException;
    
}